ASP.NET Core একটি শক্তিশালী ওয়েব ফ্রেমওয়ার্ক, যা Routing এবং Middleware এর মাধ্যমে ওয়েব রিকোয়েস্ট এবং রেসপন্স পরিচালনা করে। এই দুটি উপাদান অ্যাপ্লিকেশন ডেভেলপমেন্টে গুরুত্বপূর্ণ ভূমিকা পালন করে, এবং এগুলি একে অপরের সঙ্গে কাজ করে, যাতে রিকোয়েস্ট প্রক্রেসিং সহজ এবং কার্যকরী হয়।
Routing হলো ASP.NET Core এর একটি প্রক্রিয়া, যা HTTP রিকোয়েস্টকে সঠিক কন্ট্রোলার বা এন্ডপয়েন্টে পাঠানোর কাজ করে। এটি একটি রিকোয়েস্টের URL-পাথ এবং HTTP মেথডের ভিত্তিতে সঠিক কন্ট্রোলার অ্যাকশন বা Razor Page নির্বাচন করে। ASP.NET Core-এ Routing দুটি ধরনের হয়: Convention-based Routing এবং Attribute Routing।
এটি ASP.NET Core অ্যাপ্লিকেশনের ডিফল্ট রাউটিং পদ্ধতি। Convention-based Routing সাধারণত কন্ট্রোলার এবং অ্যাকশনের নাম অনুযায়ী রিকোয়েস্টকে সঠিক পথে নির্দেশিত করে। উদাহরণস্বরূপ:
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult About()
{
return View();
}
}
এখানে, /Home/Index
বা /Home/About
রিকোয়েস্ট আসলে, ASP.NET Core সেগুলোকে যথাক্রমে Index()
এবং About()
অ্যাকশনে রাউট করবে।
Attribute Routing রাউটিং কনভেনশনগুলোর পরিবর্তে আপনি কন্ট্রোলার অথবা অ্যাকশনে সরাসরি রাউট প্যাটার্ন নির্ধারণ করতে পারেন। এটি অনেক বেশি ফ্লেক্সিবিলিটি প্রদান করে।
[Route("Home")]
public class HomeController : Controller
{
[Route("Index")]
public IActionResult Index()
{
return View();
}
[Route("About")]
public IActionResult About()
{
return View();
}
}
এখানে /Home/Index
বা /Home/About
URL সরাসরি Index()
এবং About()
অ্যাকশনের সাথে যুক্ত হবে।
ASP.NET Core রাউটিং URL এর মধ্যে ডাইনামিক প্যারামিটার ব্যবহার করতে পারে। উদাহরণস্বরূপ:
[Route("product/{id}")]
public IActionResult ProductDetail(int id)
{
// id দিয়ে প্রোডাক্টের ডিটেইল দেখানো হবে
return View();
}
এখানে, /product/1
রিকোয়েস্ট আসলে ProductDetail(1)
অ্যাকশনটি কল হবে।
Startup.cs ফাইলে Configure
মেথডে রাউটিং কনফিগার করা হয়:
public void Configure(IApplicationBuilder app)
{
app.UseRouting(); // রাউটিং ব্যবস্থাকে সক্রিয় করে
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
এখানে, MapControllerRoute
পদ্ধতির মাধ্যমে ডিফল্ট রাউটিং কনফিগার করা হয়েছে।
Middleware হলো ASP.NET Core এর একটি গুরুত্বপূর্ণ অংশ, যা রিকোয়েস্ট এবং রেসপন্স পাইপলাইনে বিভিন্ন কাজ করে। Middleware গুলি একের পর এক রিকোয়েস্ট প্রসেস করে এবং প্রতিটি Middleware একটি নির্দিষ্ট কাজ সম্পন্ন করার পর রিকোয়েস্ট পরবর্তী Middleware-এ প্রেরণ করে। Middleware রিকোয়েস্ট হ্যান্ডলিং, রেসপন্স মডিফিকেশন, লগিং, অথেন্টিকেশন, অথরাইজেশন, এবং আরও অনেক কাজ করতে ব্যবহৃত হয়।
ASP.NET Core অ্যাপ্লিকেশন যখন HTTP রিকোয়েস্ট পায়, তখন এটি Middleware পাইপলাইনের মধ্যে দিয়ে চলে। প্রতিটি Middleware রিকোয়েস্ট প্রসেস করে এবং পরবর্তী Middleware-এ পাঠায়। নিচের কোডে Middleware কনফিগারেশন দেখানো হলো:
public void Configure(IApplicationBuilder app)
{
app.Use(async (context, next) =>
{
// রিকোয়েস্ট প্রসেস করার আগে কিছু করা
await next.Invoke(); // পরবর্তী Middleware-এ রিকোয়েস্ট পাঠানো
// রেসপন্স প্রসেস করার পরে কিছু করা
});
app.UseRouting(); // রাউটিং ব্যবস্থাকে সক্রিয় করে
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
এখানে, প্রথম Middleware রিকোয়েস্ট প্রসেস করার আগে কিছু কাজ করছে এবং পরবর্তী Middleware-এ রিকোয়েস্ট প্রেরণ করছে।
ASP.NET Core অনেক ধরনের বিল্ট-ইন Middleware প্রদান করে, যেমন:
আপনি যদি নিজস্ব কাজ করতে চান, তবে Custom Middleware তৈরি করা সম্ভব। উদাহরণস্বরূপ, একটি কাস্টম Middleware যা লগিং করে:
public class RequestLoggingMiddleware
{
private readonly RequestDelegate _next;
public RequestLoggingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// রিকোয়েস্ট লগ করা
Console.WriteLine($"Request received at {DateTime.Now}");
await _next(context); // পরবর্তী Middleware-এ রিকোয়েস্ট পাঠানো
}
}
এবং Configure
মেথডে কাস্টম Middleware যুক্ত করা:
public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<RequestLoggingMiddleware>(); // কাস্টম Middleware
app.UseRouting();
}
Middleware গুলি সাধারণত Use পদ্ধতি ব্যবহার করে অ্যাপ্লিকেশনের পাইপলাইনে যোগ করা হয়:
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles(); // Static files সরবরাহ করার জন্য Middleware
app.UseAuthentication(); // Authentication Middleware
app.UseAuthorization(); // Authorization Middleware
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
অর্থাৎ, Routing এবং Middleware একে অপরকে সম্পূরকভাবে কাজ করতে সাহায্য করে, যেখানে Middleware প্রক্রিয়াগুলি রিকোয়েস্টের আগে বা পরে বিভিন্ন কাজ সম্পাদন করে এবং Routing সঠিক কন্ট্রোলার অ্যাকশনে রিকোয়েস্ট প্রেরণ করে।
ASP.NET Core-এর Routing এবং Middleware এর সমন্বয়ে ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্ট আরও সহজ, শক্তিশালী এবং মডুলার হয়ে ওঠে। Routing রিকোয়েস্টের গন্তব্য নির্ধারণ করে এবং Middleware বিভিন্ন প্রক্রিয়ায় তা পরিচালনা করে।
ASP.NET Core-এ Routing হলো একটি গুরুত্বপূর্ণ প্রক্রিয়া, যার মাধ্যমে HTTP রিকোয়েস্টের উপর ভিত্তি করে কন্ট্রোলার এবং অ্যাকশন নির্বাচন করা হয়। এটি ইউজার রিকোয়েস্টকে সঠিক কন্ট্রোলার ও অ্যাকশন মেথডের সাথে সংযুক্ত করতে সাহায্য করে। Routing আপনাকে একটি URL প্যাটার্নের ভিত্তিতে রিকোয়েস্ট ম্যানেজ করার সুযোগ দেয়, যা ওয়েব অ্যাপ্লিকেশনের নির্দিষ্ট কার্যকলাপের সাথে সম্পর্কিত।
ASP.NET Core-এ Routing এর মাধ্যমে ইউজাররা সহজে নির্দিষ্ট অ্যাকশন, কন্ট্রোলার বা পেজে প্রবেশ করতে পারে URL-এর মাধ্যমে। Routing এক ধরণের নেভিগেশন সিস্টেম, যা নির্ধারণ করে কোন কন্ট্রোলার বা মেথডে রিকোয়েস্ট যাবে।
ASP.NET Core-এ Routing সাধারণত URL প্যাটার্নের সাথে মিল রেখে কন্ট্রোলার এবং অ্যাকশন সিলেক্ট করে। সাধারণত নিম্নলিখিত পদক্ষেপগুলোর মাধ্যমে কাজ করে:
ASP.NET Core-এ Routing দুই ধরনের হয়ে থাকে:
এটি হল ডিফল্ট routing সিস্টেম যা URL প্যাটার্নের ওপর ভিত্তি করে controller এবং action নির্বাচন করে। সাধারণত Startup.cs
ফাইলে এটি কনফিগার করা হয়।
উদাহরণ:
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
এই কনফিগারেশনে:
{controller=Home}
: যদি কোনো controller নির্ধারণ না করা হয়, তাহলে Home
কন্ট্রোলার ব্যবহার হবে।{action=Index}
: যদি কোনো action নির্ধারণ না করা হয়, তাহলে Index
action চলবে।{id?}
: id
প্যারামিটারটি ঐচ্ছিক।URL এর উদাহরণ:
https://yourdomain/Home/Index
→ Home কন্ট্রোলারের Index অ্যাকশনকে কল করবে।https://yourdomain/Home/About
→ Home কন্ট্রোলারের About অ্যাকশনকে কল করবে।https://yourdomain/Products/Details/5
→ Products কন্ট্রোলারের Details অ্যাকশন, এবং 5
ID প্যারামিটারটি পাঠাবে।এট্রিবিউট Routing ব্যবহার করে প্রতিটি কন্ট্রোলার এবং অ্যাকশনের উপর সরাসরি URL প্যাটার্ন নির্ধারণ করা যায়। এটি একটি ফлексিবল এবং ডাইনামিক পদ্ধতি, যেখানে প্রতিটি কন্ট্রোলার ও অ্যাকশনের উপরে Route
এট্রিবিউট দেয়া হয়।
উদাহরণ:
[Route("products")]
public class ProductsController : Controller
{
[Route("{id}")]
public IActionResult Details(int id)
{
// Product details logic
return View();
}
[Route("create")]
public IActionResult Create()
{
// Create product logic
return View();
}
}
এখানে:
/products/5
→ ProductsController-এর Details অ্যাকশন, যেখানে id=5
প্যারামিটার পাঠানো হবে।/products/create
→ ProductsController-এর Create অ্যাকশন কল করবে।এট্রিবিউট Routing-এর সাথে প্যারামিটার ব্যবহার করা যেতে পারে যাতে URL প্যাটার্নে ডাইনামিক ভ্যালু পাঠানো যায়।
উদাহরণ:
[Route("order/{orderId}")]
public IActionResult OrderDetails(int orderId)
{
// Fetch order details using orderId
return View();
}
এই কনফিগারেশনে, URL যেমন /order/123
ব্যবহার করলে OrderDetails
অ্যাকশন কল হবে এবং orderId
প্যারামিটার হিসেবে 123
পাঠানো হবে।
ASP.NET Core Routing আপনাকে route প্যাটার্নে কনস্ট্রেইন্ট (যেমন: একটি প্যারামিটারটি সঠিক ধরনের হতে হবে) নির্ধারণ করার সুযোগ দেয়।
উদাহরণ:
[Route("products/{id:int}")]
public IActionResult GetProduct(int id)
{
// Only integer values for id will match
return View();
}
এখানে id:int
কনস্ট্রেইন্ট নির্ধারণ করেছে যে id
একটি পূর্ণসংখ্যা হতে হবে।
Routing প্যাটার্নে আপনি ডিফল্ট ভ্যালু দিতে পারেন, যা ইউজার যদি কোনো প্যারামিটার না পাঠায় তবে সেগুলো ব্যবহার হবে।
উদাহরণ:
[Route("products/{id?}")]
public IActionResult ShowProduct(int? id = 1)
{
// Default id = 1 if no id is provided
return View();
}
Route Prefix ব্যবহার করে একটি নির্দিষ্ট কন্ট্রোলারের সব অ্যাকশনের জন্য সাধারণ একটি URL প্যাটার্ন নির্ধারণ করা যেতে পারে।
উদাহরণ:
[Route("admin/[controller]")]
public class ProductsController : Controller
{
[Route("list")]
public IActionResult List()
{
return View();
}
[Route("details/{id}")]
public IActionResult Details(int id)
{
return View();
}
}
এখানে admin/products/list
বা admin/products/details/1
এই ধরনের URL ব্যবহার করা যাবে।
ASP.NET Core-এ Routing একটি অত্যন্ত গুরুত্বপূর্ণ উপাদান যা অ্যাপ্লিকেশন নেভিগেশন ও কন্ট্রোলারের কার্যকলাপ নির্ধারণে সহায়ক। এর মাধ্যমে URL প্যাটার্ন, কনস্ট্রেইন্ট, এবং প্যারামিটার ব্যবহারের মাধ্যমে আরও কার্যকরী, ফ্লেক্সিবল এবং শক্তিশালী ওয়েব অ্যাপ্লিকেশন তৈরি করা সম্ভব।
ASP.NET Core-এ Routing একটি গুরুত্বপূর্ণ বিষয়, যা অ্যাপ্লিকেশনের ক্লায়েন্টের রিকোয়েস্টকে নির্দিষ্ট Controller Action-এ ম্যাপ করে। ASP.NET Core-এ রাউটিং করতে দুই ধরনের পদ্ধতি ব্যবহৃত হয়:
Convention-based Routing একটি centrally defined routing pattern ব্যবহার করে রিকোয়েস্টকে ম্যাপ করে। এটি সাধারণত Startup.cs ফাইলের মধ্যে UseEndpoints
বা MapControllerRoute
পদ্ধতির মাধ্যমে কনফিগার করা হয়।
এই পদ্ধতিতে রাউটিং প্যাটার্ন ডিফাইন করা হয় এবং সমস্ত রিকোয়েস্ট সেই প্যাটার্ন অনুসারে রুট হয়।
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
ব্যাখ্যা:
controller=Home
: যদি রিকোয়েস্টে কোন নির্দিষ্ট কন্ট্রোলার উল্লেখ না থাকে, তাহলে ডিফল্ট কন্ট্রোলার হবে HomeController।action=Index
: যদি কোন নির্দিষ্ট অ্যাকশন উল্লেখ না থাকে, তাহলে ডিফল্ট অ্যাকশন হবে Index।id?
: এই অংশটি ঐচ্ছিক (?
নির্দেশ করে)।Attribute Routing একটি declarative approach ব্যবহার করে, যেখানে রাউটিং প্যাটার্ন সরাসরি Controller এবং Action Method-এ সংজ্ঞায়িত হয়। এটি কন্ট্রোলারের নির্দিষ্ট পাথ এবং প্যারামিটার নিয়ন্ত্রণের জন্য ব্যবহার করা হয়।
Attribute Routing করতে Route
অ্যাট্রিবিউট ব্যবহার করা হয়। এটি প্রতিটি Controller বা Action Method-এর উপরে ডিক্লেয়ার করা হয়।
Controller-এর স্তরে Attribute Routing:
[Route("products")]
public class ProductController : Controller
{
[Route("")]
public IActionResult Index()
{
return View();
}
[Route("details/{id}")]
public IActionResult Details(int id)
{
return View();
}
}
ব্যাখ্যা:
/products
: Index অ্যাকশন কল করবে।/products/details/1
: Details অ্যাকশন কল করবে যেখানে id=1
।Action Method-এর স্তরে Attribute Routing:
public class ProductController : Controller
{
[HttpGet("products/{id}")]
public IActionResult GetProduct(int id)
{
return View();
}
[HttpPost("products/create")]
public IActionResult CreateProduct(Product product)
{
return View();
}
}
বৈশিষ্ট্য | Convention-based Routing | Attribute Routing |
---|---|---|
ডিফাইন করার পদ্ধতি | Startup.cs -এ কেন্দ্রিয়ভাবে সংজ্ঞায়িত। | সরাসরি Controller বা Action Method-এ। |
নিয়ন্ত্রণের মাত্রা | সীমিত, সাধারণ প্যাটার্নের জন্য। | Controller এবং Action অনুযায়ী কাস্টম। |
সহজতা | সহজ এবং দ্রুত। | জটিল এবং বিস্তারিত। |
উপযুক্ততা | সাধারণ অ্যাপ্লিকেশনের জন্য উপযুক্ত। | জটিল অ্যাপ্লিকেশনের জন্য আদর্শ। |
HTTP Method সমর্থন | ডিফল্টভাবে HTTP Method নির্দিষ্ট নয়। | নির্দিষ্ট HTTP Method ব্যবহার করা যায়। |
ASP.NET Core-এ Convention-based Routing এবং Attribute Routing একসঙ্গে ব্যবহার করা যায়। তবে জটিল অ্যাপ্লিকেশনের ক্ষেত্রে Attribute Routing বেশি কার্যকর, কারণ এটি নির্দিষ্ট নিয়ন্ত্রণ এবং কাস্টমাইজেশনের সুযোগ দেয়।
Routing ASP.NET Core-এ অ্যাপ্লিকেশন স্ট্রাকচার এবং ক্লায়েন্ট রিকোয়েস্ট পরিচালনার একটি অপরিহার্য অংশ। সঠিক রাউটিং প্যাটার্ন নির্বাচন অ্যাপ্লিকেশনের কার্যকারিতা এবং ব্যবস্থাপনা সহজ করে।
ASP.NET Core অ্যাপ্লিকেশন নির্মাণে Middleware একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। Middleware হলো সফটওয়্যারের কম্পোনেন্ট যেগুলি HTTP রিকোয়েস্ট এবং রেসপন্স পাইপলাইনে কাজ করে। ASP.NET Core এর Middleware সিস্টেম বিভিন্ন ধরনের কাজ সম্পাদন করতে ব্যবহৃত হয়, যেমন রিকোয়েস্ট লগিং, অথেন্টিকেশন, অথরাইজেশন, রিকোয়েস্ট বৈধকরণ (validation), এবং রেসপন্স ট্রান্সফর্মেশন।
Middleware অ্যাপ্লিকেশনের রিকোয়েস্ট এবং রেসপন্স প্রসেসিং এর জন্য একে অপরের সাথে যুক্ত হয়ে কাজ করে। এই প্রক্রিয়াটি রিকোয়েস্টের প্রথম গ্রহণ থেকে রেসপন্স ফেরত দেওয়ার শেষ পর্যন্ত চলে। একাধিক Middleware একের পর এক পাইপলাইনে কাজ করে, যেমন:
ASP.NET Core-এ কাস্টম Middleware তৈরি করা খুবই সহজ। এটি সাধারণত একটি ক্লাসের মাধ্যমে তৈরি করা হয় যা Invoke
বা InvokeAsync
মেথডের মাধ্যমে রিকোয়েস্ট প্রক্রিয়ায় হস্তক্ষেপ করে।
Invoke
বা InvokeAsync
মেথডে রিকোয়েস্ট এবং রেসপন্স প্রসেসিংয়ের জন্য কোড লিখবে।Configure
মেথডে এই কাস্টম Middleware যোগ করুন।ধরা যাক, আপনি একটি কাস্টম Middleware তৈরি করতে চান যা রিকোয়েস্টের আগে কিছু লোগিং কাজ করবে এবং এরপর রেসপন্স ফেরত দেবে।
public class RequestLoggingMiddleware
{
private readonly RequestDelegate _next;
public RequestLoggingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// রিকোয়েস্টের তথ্য লগ করা
Console.WriteLine($"Request Path: {context.Request.Path}");
// পরবর্তী Middleware বা Request Handler কল করা
await _next(context);
// রেসপন্সের পরবর্তী তথ্য লগ করা
Console.WriteLine($"Response Status Code: {context.Response.StatusCode}");
}
}
কাস্টম Middleware ব্যবহার করতে, স্টার্টআপ ক্লাসে Configure
মেথডে এটি যোগ করতে হবে।
public class Startup
{
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
// কাস্টম Middleware যোগ করা
app.UseMiddleware<RequestLoggingMiddleware>();
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
}
এখানে UseMiddleware<RequestLoggingMiddleware>()
দ্বারা কাস্টম Middleware পিপলাইনে যুক্ত করা হয়েছে। এখন যখন কোনো রিকোয়েস্ট আসবে, Middleware রিকোয়েস্টের পথ এবং রেসপন্সের স্ট্যাটাস কোড লোগ করবে।
ASP.NET Core Middleware আরো উন্নত করতে এবং কাস্টমাইজ করতে বেশ কিছু ফিচার ব্যবহার করা যেতে পারে, যেমন:
public class RequestLoggingMiddleware
{
private readonly RequestDelegate _next;
public RequestLoggingMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
// শুধুমাত্র নির্দিষ্ট পাথের জন্য লগিং
if (context.Request.Path.StartsWithSegments("/api"))
{
Console.WriteLine($"API Request Path: {context.Request.Path}");
}
await _next(context);
}
}
এটি শুধুমাত্র /api
পাথের রিকোয়েস্টের জন্য লোগিং করবে।
Middleware ASP.NET Core অ্যাপ্লিকেশনে খুবই গুরুত্বপূর্ণ উপাদান। এটি রিকোয়েস্ট এবং রেসপন্স প্রসেসিং-এর জন্য একে অপরের সাথে কাজ করে এবং বিভিন্ন ধরনের ফাংশনালিটি যোগ করে, যেমন লগিং, অথেন্টিকেশন, অথরাইজেশন, এবং এক্সসেপশন হ্যান্ডলিং। কাস্টম Middleware তৈরি করার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনকে আরও কাস্টমাইজড এবং কার্যকরী করতে পারেন।
ASP.NET Core এর Middleware হলো সেই কম্পোনেন্টগুলো যা HTTP রিকোয়েস্ট এবং রেসপন্স প্রসেস করার জন্য ব্যবহৃত হয়। প্রতিটি Middleware একটি নির্দিষ্ট কাজ করে এবং তারা একে অপরের সঙ্গে কাজ করে যাতে পুরো অ্যাপ্লিকেশনটি সঠিকভাবে কাজ করতে পারে। ASP.NET Core অনেক ধরনের বিল্ট-ইন Middleware প্রদান করে যা বিভিন্ন কাজের জন্য ব্যবহার করা হয়।
এখানে কিছু গুরুত্বপূর্ণ Built-in Middleware এর উদাহরণ দেওয়া হলো, যেমন Static Files এবং Authentication Middleware।
Static Files Middleware হলো ASP.NET Core-এর একটি built-in Middleware যা স্ট্যাটিক ফাইল (যেমন CSS, JavaScript, ইমেজ, ফন্টস) সার্ভ করতে ব্যবহৃত হয়। এটি সাধারণত wwwroot ফোল্ডারের মধ্যে স্টোর করা ফাইলগুলিকে ওয়েব ব্রাউজারে সরাসরি পাঠায়।
ASP.NET Core অ্যাপ্লিকেশনটিতে wwwroot ফোল্ডারে স্ট্যাটিক ফাইল রাখতে হয়, এবং আপনি Startup.cs
ফাইলে Static Files Middleware কনফিগার করতে পারেন।
Startup.cs ফাইলে Static Files Middleware কনফিগার করার উদাহরণ:
public class Startup
{
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// Development environment এ error pages দেখানোর জন্য
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
// Static files middleware যোগ করা
app.UseStaticFiles();
// অন্যান্য middleware গুলি
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
এখানে, app.UseStaticFiles();
স্ট্যাটিক ফাইল সার্ভ করার জন্য Middleware কে অ্যাকটিভেট করে। এখন, wwwroot
ফোল্ডারের ভিতরে থাকা ফাইলগুলো ব্রাউজারে সরাসরি অ্যাক্সেস করা যাবে। যেমন:
Authentication Middleware হলো ASP.NET Core-এর আরেকটি গুরুত্বপূর্ণ built-in Middleware যা অ্যাপ্লিকেশনের মধ্যে ব্যবহারকারীর পরিচয় যাচাই করতে ব্যবহৃত হয়। এটি Cookie Authentication, JWT Bearer Tokens, অথবা OAuth এর মতো প্রক্রিয়া ব্যবহার করতে পারে। Authentication Middleware অ্যাপ্লিকেশনের একাধিক জায়গায় ব্যবহারকারীর লগইন, সাইন-আপ এবং লগআউট প্রক্রিয়া পরিচালনা করে।
ASP.NET Core অ্যাপ্লিকেশনটিতে Authentication Middleware কনফিগার করার জন্য, আপনাকে Startup.cs
ফাইলে যথাযথ সেটিংস কনফিগার করতে হবে। উদাহরণস্বরূপ, Cookie Authentication কনফিগারেশন করা যাক:
Startup.cs ফাইলে Cookie Authentication কনফিগার করার উদাহরণ:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// Authentication service কনফিগার করা (cookie authentication)
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.LoginPath = "/Account/Login"; // লগইন পাথ
options.AccessDeniedPath = "/Account/AccessDenied"; // অ্যাক্সেস ডিনাইড পাথ
});
// অন্যান্য সেবা কনফিগারেশন
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// Development environment এ error pages দেখানোর জন্য
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
// Static files middleware
app.UseStaticFiles();
// Authentication middleware
app.UseAuthentication(); // Authentication middleware কনফিগার করা
// Authorization middleware
app.UseAuthorization();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
এখানে, app.UseAuthentication();
Authentication Middleware কে সক্রিয় করে, যা সমস্ত রিকোয়েস্টে ব্যবহারকারীর লগইন বা টোকেন যাচাই করবে।
উপরের কনফিগারেশনে AddCookie ব্যবহার করা হয়েছে, যা কুকি বেসড Authentication প্রক্রিয়া ব্যবহারের জন্য। যখন ব্যবহারকারী লগইন করবেন, তখন একটি কুকি তৈরি হবে যা সার্ভারের সঙ্গে যোগাযোগ করে ব্যবহারকারীর সেশন চিহ্নিত করবে।
ASP.NET Core আরও অনেক Built-in Middleware সরবরাহ করে, যা আপনাকে বিভিন্ন প্রয়োজনীয় কাজ করতে সাহায্য করে। এর মধ্যে কিছু গুরুত্বপূর্ণ Middleware হলো:
ASP.NET Core তে Built-in Middleware গুলি সিস্টেমের বিভিন্ন অংশ যেমন স্ট্যাটিক ফাইল, Authentication, Routing, Authorization ইত্যাদি পরিচালনা করতে সাহায্য করে। Static Files Middleware স্ট্যাটিক ফাইল সার্ভ করার জন্য ব্যবহৃত হয়, এবং Authentication Middleware ব্যবহারকারীর লগইন এবং সেশন ম্যানেজমেন্ট পরিচালনা করে। ASP.NET Core-এর Middleware সিস্টেমটি অত্যন্ত ফ্লেক্সিবল এবং কাস্টম Middleware তৈরি করার সুযোগও প্রদান করে, যা আপনাকে আপনার অ্যাপ্লিকেশন প্রয়োজন অনুযায়ী কাস্টমাইজ করতে সহায়তা করে।
common.read_more